home *** CD-ROM | disk | FTP | other *** search
- *** /tmp/,RCSt1a08140 Thu Jul 23 11:18:15 1992
- --- rwhod.c Thu Dec 19 09:37:57 1991
- ***************
- *** 39,44
- */
- #define AL_INTERVAL (3 * 60)
-
- struct sockaddr_in sin = { AF_INET };
-
- extern errno;
-
- --- 39,52 -----
- */
- #define AL_INTERVAL (3 * 60)
-
- + /*
- + * For the -s option that will send out rwho packets, but not
- + * recieve them or write them to a file
- + *
- + */
- + int supplier_only;
- + int suppress_broadcast, suppress_pnt2pnt;
- +
- struct sockaddr_in sin = { AF_INET };
-
- extern errno;
- ***************
- *** 81,87
- int getkmem();
- struct in_addr inet_makeaddr();
-
- ! main()
- {
- struct sockaddr_in from;
- struct stat st;
-
- --- 89,97 -----
- int getkmem();
- struct in_addr inet_makeaddr();
-
- ! main(argc, argv)
- ! int argc;
- ! char **argv;
- {
- struct sockaddr_in from;
- struct stat st;
- ***************
- *** 92,97
- char *cp;
- extern char *index();
-
- if (getuid()) {
- fprintf(stderr, "rwhod: not super user\n");
- exit(1);
-
- --- 102,125 -----
- char *cp;
- extern char *index();
-
- + extern char *optarg;
- + extern int optind;
- + int c, errflag = 0;
- +
- + while ((c = getopt(argc, argv, "sbp")) != -1)
- + switch (c) {
- + case 's': supplier_only++; break;
- + case 'b': suppress_broadcast++; break;
- + case 'p': suppress_pnt2pnt++; break;
- + case '?': errflag++; break;
- + }
- +
- + if (optind < argc)
- + errflag++;
- +
- + if (errflag)
- + fprintf(stderr, "usage: rwhod [-s] [-b] [-p]\n");
- +
- if (getuid()) {
- fprintf(stderr, "rwhod: not super user\n");
- exit(1);
- ***************
- *** 168,173
-
- cc = recvfrom(s, (char *)&wd, sizeof (struct whod), 0,
- &from, &len);
- if (cc <= 0) {
- if (cc < 0 && errno != EINTR)
- syslog(LOG_WARNING, "recv: %m");
-
- --- 196,203 -----
-
- cc = recvfrom(s, (char *)&wd, sizeof (struct whod), 0,
- &from, &len);
- + if (supplier_only)
- + continue;
- if (cc <= 0) {
- if (cc < 0 && errno != EINTR)
- syslog(LOG_WARNING, "recv: %m");
- ***************
- *** 441,446
- }
- np->n_flags = ifreq.ifr_flags;
- if (np->n_flags & IFF_POINTOPOINT) {
- if (ioctl(s, SIOCGIFDSTADDR, (char *)&ifreq) < 0) {
- syslog(LOG_ERR, "ioctl (get dstaddr)");
- free((char *)np);
-
- --- 471,480 -----
- }
- np->n_flags = ifreq.ifr_flags;
- if (np->n_flags & IFF_POINTOPOINT) {
- + if (suppress_pnt2pnt) {
- + free((char *)np);
- + continue;
- + }
- if (ioctl(s, SIOCGIFDSTADDR, (char *)&ifreq) < 0) {
- syslog(LOG_ERR, "ioctl (get dstaddr)");
- free((char *)np);
- ***************
- *** 451,456
- np->n_addr, np->n_addrlen);
- }
- if (np->n_flags & IFF_BROADCAST) {
- if (ioctl(s, SIOCGIFBRDADDR, (char *)&ifreq) < 0) {
- syslog(LOG_ERR, "ioctl (get broadaddr)");
- free((char *)np);
-
- --- 485,494 -----
- np->n_addr, np->n_addrlen);
- }
- if (np->n_flags & IFF_BROADCAST) {
- + if (suppress_broadcast) {
- + free((char *)np);
- + continue;
- + }
- if (ioctl(s, SIOCGIFBRDADDR, (char *)&ifreq) < 0) {
- syslog(LOG_ERR, "ioctl (get broadaddr)");
- free((char *)np);
-